﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ProyectoBastanteo.Dominio;
using System.Data.SqlClient;


namespace ProyectoBastanteo.Persistencia
{
    public class PoderesDAO
    {

        public Poderes Crear(Poderes poderesACrear)
        {
            //int nuevoCodigo = ObtenerNuevoCodigo();
            string sentencia = "INSERT INTO Poderes VALUES (@codigo, @nombre, @tipo)";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@codigo",poderesACrear.codpod));
                    comando.Parameters.Add(new SqlParameter("@nombre", poderesACrear.nompod));
                    comando.Parameters.Add(new SqlParameter("@tipo", poderesACrear.tippod));
                    
                    
                    comando.ExecuteNonQuery();
                }
            }
            return poderesACrear;
        }


        
        public Poderes Obtener(string codigo)
        {
            Poderes PoderExistente = null;
            string sentencia = "SELECT * FROM Poderes WHERE codpod=@codigo";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@codigo", codigo));
                    SqlDataReader resultado = comando.ExecuteReader();
                    if (resultado.Read())
                    {
                        PoderExistente = new Poderes();
                        PoderExistente.codpod = (string )resultado["codpod"];
                        PoderExistente.nompod = (string)resultado["nompod"];
                        PoderExistente.tippod= (string)resultado["tippod"];
                    }
                }
            }
            return PoderExistente;
        }

        public VerificacionPoderes ObtenerPoderesporRuc(string pRuc)
        {
            VerificacionPoderes VerificaPoderes = null;
            ClienteDAO ClieDAO = new ClienteDAO();
            PoderesDAO PoderDAO = new PoderesDAO();


            string sentencia = "Select c.codclie, r.nombrep, b.grubast, r.nudorep, p.nompod, b.importe From clientes c , Representantes r, bastanteo b, Poderes p where c.rucclie = @parametro1 and c.codclie = r.codclie and r.codclie = b.codclie and b.codpod = p.codpod ";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("parametro1", pRuc));
                    SqlDataReader resultado = comando.ExecuteReader();
                    if (resultado.Read())
                    {
                        VerificaPoderes = new VerificacionPoderes();
                        VerificaPoderes.codclie.codclie = (int)resultado["codclie"];
                        VerificaPoderes.nombrep = (string)resultado["nombrep"];
                        VerificaPoderes.grubast = (string)resultado["grubast"];
                        VerificaPoderes.nudorep = (string)resultado["nudorep"];
                        VerificaPoderes.nompod = (string)resultado["nompod"];
                        VerificaPoderes.importe = (double)resultado["importe"];
                    }
                }
            }
            return VerificaPoderes;
        }

        public ICollection<Poderes> ListarTodos()
        {
            ICollection<Poderes> poderExistentes = new List<Poderes>();
            Poderes poderExistente = null;
            string sentencia = "SELECT * FROM Poderes";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    SqlDataReader resultado = comando.ExecuteReader();
                    while (resultado.Read())
                    {
                        poderExistente = new Poderes();
                        poderExistente.codpod = (string)resultado["codpod"];
                        poderExistente.nompod = (string)resultado["nompod"];
                        poderExistentes.Add(poderExistente);
                    }
                }
            }
            return poderExistentes;
        }

        public void Eliminar(Poderes poderAEliminar)
        {
            string sentencia = "DELETE FROM Poderes WHERE codpod=@codigo";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@codigo", poderAEliminar.codpod));
                    comando.ExecuteNonQuery();
                }
            }
        }


    }
}